home *** CD-ROM | disk | FTP | other *** search
/ Video Toaster 4.0 / Video Toaster v4.0.iso / arexx / modeler / shapetext.lwm < prev    next >
Text File  |  1993-12-13  |  2KB  |  97 lines

  1. /* CMD: Shape Text
  2.  * Extrude/Bevel text or other flat objects...
  3.  * By Arnie Cachelin © 1992, 1993 NewTek Inc. */
  4.  
  5. styles = 'Block Chisel Round'
  6. typ=1
  7. deep = 0.1
  8. wide = 0.02
  9. call addlib "rexxsupport.library", 0, -30, 0
  10. libadd = addlib("LWModelerARexx.port",0)
  11. signal on error
  12. signal on syntax
  13. MATHLIB="rexxmathlib.library"
  14. IF POS(MATHLIB , SHOW('L')) = 0 THEN
  15.   IF ~ADDLIB(MATHLIB , 0 , -30 , 0) THEN DO
  16.     call notify(1,"!Can't find "MATHLIB)
  17.     exit
  18.     END
  19. call req_begin 'Shape Text'
  20. id_typ = req_addcontrol("Text Type", "CH",Styles)
  21. id_deep = req_addcontrol("Depth", 'n', 1)
  22. id_wide = req_addcontrol("Edge Width", 'n', 1)
  23. axid = req_addcontrol("Axis", "CH",'X Y Z')
  24. call req_setval id_typ, typ,1
  25. call req_setval id_deep, deep,0.1
  26. call req_setval id_wide, wide,0.02
  27. call req_setval axId, 3
  28.  
  29. if (~req_post()) then do
  30.     call req_end
  31.     exit
  32. end
  33. typ = req_getval(id_typ)
  34. wide = req_getval(id_wide)
  35. deep = req_getval(id_deep)
  36. axis = translate(req_getval(axId),'XYZ','123')
  37. call req_end
  38. call ShapeText(typ)
  39. if (libadd) then call remlib("LWModelerARexx.port")
  40. exit
  41.  
  42. syntax:
  43. error:
  44.   call end_all
  45.     t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
  46.   if (libadd) then call remlib("LWModelerARexx.port")
  47.     exit
  48.  
  49. Bevel_Block:
  50.     call bevel(0, deep / 2)
  51.     return
  52.  
  53. Bevel_Chisel:
  54.     call shapebevel(-wide wide (-wide) deep/2)
  55.     return
  56.  
  57. Bevel_Round:
  58.     n = 5
  59.     pat = ''
  60.     do i=1 to n
  61.         a = 3.14159/2 * i / n
  62.         pat = pat (-sin(a)*wide) (1-cos(a))*wide
  63.       end i
  64.     call shapebevel(pat (-wide) deep/2)
  65.     return
  66.  
  67. ShapeText: PROCEDURE expose wide styles deep axis
  68.   arg typ
  69.   sl1 = curlayer()
  70.   empty = emptylayers()
  71.   if (words(empty) < 1) then do
  72.     call notify 1,syscode,"!Need an empty layer","!for this operation."
  73.     exit
  74.     end
  75.   sl2 = word(empty, 1)
  76.   call copy
  77.   sbase=cursurface()
  78.   call setlayer sl2
  79.   call paste
  80.   call sel_mode('user')
  81.   call sel_polygon('set')
  82.   interpret 'call Bevel_' || word(styles, typ)
  83.   call cut
  84.   call changesurface(sbase || "_Side")
  85.   call setlayer sl1 /* Get the correct faces from sl1. */
  86.   call changesurface(sbase)
  87.   call flip
  88.   call cut
  89.   call setlayer sl2
  90.   call paste
  91.   call mirror(axis, -deep/2)
  92.   call mergepoints
  93.   call cut
  94.   call setlayer sl1
  95.   call paste
  96.   return
  97.